home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / postgres / postgre4.z / postgre4 / src / lib / C / nodes.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-27  |  1.4 KB  |  79 lines

  1. /*
  2.  * nodes.c --
  3.  *    Single inheritance hierachy of tagged node code.
  4.  * $Header: /private/postgres/src/lib/C/RCS/nodes.c,v 1.10 1992/08/21 05:40:21 mer Exp $
  5.  */
  6. #include "tmp/c.h"
  7.  
  8. RcsId("$Header: /private/postgres/src/lib/C/RCS/nodes.c,v 1.10 1992/08/21 05:40:21 mer Exp $");
  9.  
  10. #include "utils/palloc.h"
  11. #include "utils/log.h"
  12.  
  13. #include "nodes/nodes.h"
  14. #include "nodes/relation.h"
  15. #include "nodes/primnodes.h"
  16.  
  17. void
  18. SetNodeType(thisNode, tag)
  19.     Node    thisNode;
  20.     TypeId    tag;
  21. {
  22.     Assert(NodeIsValid(thisNode));
  23.     Assert(TypeIdIsValid(tag));
  24.  
  25.     NodeType(thisNode) = tag;
  26. }
  27.  
  28.  
  29. Node
  30. NewNode(size, tag)
  31.     Size    size;
  32.     TypeId    tag;
  33. {
  34.     Node    newNode;
  35.     
  36.     Assert(size > 0);
  37.  
  38.     newNode = (Node) palloc(size);
  39.     bzero((char *)newNode, size);
  40.     NodeSetTag(newNode, tag);
  41.     return(newNode);
  42. }
  43.  
  44. Size
  45. NodeTagGetSize(tag)
  46.      TypeId tag;
  47. {
  48.     Size node_size;
  49.     switch(tag) {
  50.       case T_Resdom:
  51.     node_size = sizeof(struct _Resdom);
  52.     break;
  53.       case T_Var:
  54.     node_size = sizeof(struct _Var);
  55.     break;
  56.       case T_Const:
  57.     node_size = sizeof(struct _Const);
  58.     break;
  59.       case T_Oper:
  60.     node_size = sizeof(struct _Oper);
  61.     break;
  62.       case T_Param:
  63.     node_size = sizeof (struct _Param);
  64.     break;
  65.       case T_Func:
  66.     node_size = sizeof (struct _Func);
  67.     break;
  68.       case T_Iter:
  69.     node_size = sizeof (struct _Iter);
  70.     break;
  71.       default:
  72.     elog(NOTICE,"calling NodeTagGetSize with unknown tag");
  73.     node_size = 48;
  74.     break;
  75.     }
  76.     return(node_size);
  77. }
  78.  
  79.